package com.sugon.dao;

import com.sugon.entity.SysUserEntity;
import com.sugon.entity.SysUserRoleEntity;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 用户与角色对应关系
 *
 * @author lipengjun
 * @date 2017年11月18日 下午13:13:23
 */
public interface SysUserRoleDao extends BaseDao<SysUserRoleEntity> {
    /**
     * 根据用户ID，获取角色ID列表
     *
     * @param userId
     */
    List<String> queryRoleIdList(String userId);

    /**
     * 根据用户ID，获取角色名称列表
     *
     * @param userId
     */
    List<String> queryRoleNameList(@Param("userId") String userId);

    /**
     * 根据用户ID，获取角色名称列表
     *
     * @param userId
     */
    Set<String> queryRoleCodeList(@Param("userId") String userId);

    /**
     * 根据用户ID，获取角色名称列表
     *
     * @param userId
     */
    List<String> queryRoleNames(@Param("userId") String userId, @Param("menuIdList") List<String> menuIdList);

    /**
     * 查询车间下具有某个菜单访问权限的用户
     *
     * @param workshopId 车间ID 非必填
     * @param menuId     菜单ID 必填
     * @return
     */
    List<Map<String, Object>> queryWorkshopMenuUser(@Param("workshopId") String workshopId, @Param("menuId") String menuId);

    /**
     * 查询车间下具有某个菜单访问权限的用户
     *
     * @param workshopId 车间ID 非必填
     * @param roleId     角色ID 必填
     * @return
     */
    List<SysUserEntity> queryWorkshopRoleUser(@Param("workshopId") String workshopId, @Param("roleId") String roleId);

    /**
     * 查询车间下具有某个菜单访问权限的用户
     *
     * @param deptId 部门ID 非必填
     * @param roleIds     角色ID列表 必填
     * @return
     */
    List<SysUserEntity> queryUser(@Param("deptId") String deptId, @Param("roleIds") List<String> roleIds);

    /**
     * 查询指定角色的用户列表
     *
     * @param roleIdList
     * @return
     */
    List<SysUserEntity> queryUserByRoleIdList(@Param("roleIdList") List<String> roleIdList);

}
